import { StoreOptions } from "vuex";
import accessEnum from "@/access/accessEnum";
import { UserControllerService } from "../../generated";

export default {
  namespaced: true,
  state: () => ({
    loginUser: {
      userName: "未登录",
      // userRole: accessEnum.NOT_LOGIN,
    },
  }),
  actions: {
    async getLoginUser({ commit, state }, payload) {
      // 调用 updateUser 方法，{ userName: "eddy" } 为 payload
      // commit("updateUser", { userName: "eddy" });
      // todo 改为从后端获取 user 信息
      // commit("updateUser", payload);
      /**
       * 从远程请求获取登录信息
       * 小知识 : async await
       * async 标记一个函数是异步的，可以接收多个线程，进行执行
       * await 标记一个线程，等待执行完毕
       */
      debugger;
      const res = await UserControllerService.getLoginUserUsingGet();
      console.log(res);
      if (res.code === 0) {
        // commit("updateUser", { userName: "eddy" });
        commit("updateUser", res.data);
      } else {
        commit("updateUser", {
          ...state.loginUser,
          userRole: accessEnum.NOT_LOGIN,
        });
      }
    },
  },
  mutations: {
    // 第一个参数 ： state 为vue 给的，
    // 第二个参数 : payload 为object 是 调用方法的传参
    updateUser(state, payload) {
      state.loginUser = payload;
    },
  },
} as StoreOptions<any>;
